Linux 用户切换

命令:

1
su

语法

1
su [-] username

        后面可以跟 ‘-’ 也可以不跟,普通用户 su 不加 username 时就是切换到 root 用户,当然 root 用户同样可以 su 到普通用户。 ‘-’ 这个字符的作用是,加上后会初始化当前用户的各种环境变量。
        做个实验说明加与不加 ‘-’ 的区别:

1
2
3
4
5
6
7
8
9
10
11
12
[test@localhost ~]$ pwd
/home/test
[test@localhost ~]$ su
密码:
[root@localhost test]# pwd
/home/test
[root@localhost test]# exit
exit
[test@localhost ~]$ su -
密码:
[root@localhost ~]# pwd
/root

        如果不加 ‘-’ 切换到 root 账户下时,当前目录没有变化,而加上 ‘-’ 切换到 root 账户后,当前目录为 root 账户的家目录,这跟直接登录 root 账户是一样的。当用 root 切换普通用户时,是不需要输入密码的。这也体现了 root 用户至高无上的权利。

以某一个用户的身份执行某一个命令

        语法

1
su -c "command" username

        示例
        用 www 的用户身份执行 /home/www/test.sh 这个脚本

1
su -c "/home/www/test.sh" www

        前提是,/home/www/test.sh 这个脚本文件 www 用户有执行权限

如何限制远程登录时,不允许 root 登录,而只允许普通用户登录

        修改配置文件 /etc/sshd/sshd_config

1
vim /etc/sshd/sshd_config

        在文件中查找 “#PermitRoorLogin yes” 这句话,修改为 “PermitRootLogin no” 表示不允许 root 用户远程登录。
        /etc/sshd/sshd_config 为 sshd 服务的配置文件,默认虽然在前面加 “#” 注释了这句,“PermitRootLogin yes” 但它默认就是允许 root 账户登录的,所以要想不让 root 登录,修改为 no 就可以了。保存配置文件后,重启 sshd 服务:

1
service sshd restart

如何限制远程登录时,只允许 root 使用密钥登录,而不能使用密码登录

        打开配置文件 /etc/sshd/sshd_config

1
vim /etc/sshd/sshd_config

        加上一句:

1
PermitRootLogin without-password

        保存配置文件后,重启 sshd 服务:

1
service sshd restart

        这样就可以了。